<template>
  <div class="dropdown" ref="dropdownRef">
    <a
      href="#"
      class="btn btn-outline-light my-2 dropdown-toggle"
      @click.prevent="toggleOpen"
    >
      {{ title }}
    </a>
    <ul class="dropdown-menu" :style="{ display: 'block' }" v-if="isOpen">
      <slot></slot>
    </ul>
  </div>
</template>
<script lang="ts">
import { defineComponent, ref, watch } from "vue";
import useClickOutside from '../hook/useClickOutside'
export default defineComponent({
  name: "DropdownName",
  props: {
    title: {
      type: String,
      required: true,
    },
  },
  setup() {
    const isOpen = ref(false);
    const toggleOpen = () => {
      isOpen.value = !isOpen.value;
    };
    const dropdownRef=ref<null|HTMLElement>(null)
    const isClickOutside=useClickOutside(dropdownRef)
    console.log(dropdownRef)
    watch(isClickOutside,()=>{
      if(isOpen.value && isClickOutside.value){
        isOpen.value=false
      }
    })
    return {
      isOpen,
      toggleOpen,
      dropdownRef
    };
  },
});
</script>
<style scoped>
.dropdown-menu{
  float: right;
  display: block;
  position: absolute;
  right: 0px;
}
</style>